package cn.com.blueInfo.bpm.person.service;

import cn.com.blueInfo.bpm.person.request.OrganizeLevelDTO;
import cn.com.blueInfo.bpm.person.response.OrganizeLevelVO;
import cn.com.blueInfo.utils.result.ResultInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * 组织级别 业务服务类
 * @author suxch
 * @since 2025-08-24 01:39:52
 */
public interface OrganizeLevelService {

    /**
     * 新增组织级别
     * @param organizeLevelDTO 组织级别参数
     */
    ResultInfo<Integer> addOrganizeLevel(OrganizeLevelDTO organizeLevelDTO);

    /**
     * 批量新增组织级别
     * @param organizeLevelDTOList 组织级别参数列表
     */
    ResultInfo<Integer> batchAddOrganizeLevel(List<OrganizeLevelDTO> organizeLevelDTOList);

    /**
     * 删除组织级别
     * @param organizeLevelId 组织级别ID
     */
    ResultInfo<Integer> removeOrganizeLevel(Long organizeLevelId);

    /**
     * 批量删除组织级别
     * @param organizeLevelIdList 组织级别ID列表
     */
    ResultInfo<Integer> batchRemoveOrganizeLevel(List<Long> organizeLevelIdList);

    /**
     * 更新部分组织级别
     * @param organizeLevelUpdatePartialDTO 组织级别参数
     */
    ResultInfo<Integer> modifyOrganizeLevelPartial(OrganizeLevelDTO.UpdatePartialDTO organizeLevelUpdatePartialDTO);

    /**
     * 更新全部组织级别
     * @param organizeLevelDTO 组织级别参数
     */
    ResultInfo<Integer> modifyOrganizeLevel(OrganizeLevelDTO organizeLevelDTO);

    /**
     * 查询一条组织级别
     * @param organizeLevelId 组织级别ID
     */
    ResultInfo<OrganizeLevelVO> queryOrganizeLevelById(Long organizeLevelId);

    /**
     * 分页查询组织级别
     * @param organizeLevelQueryDTO 组织级别参数
     */
    ResultInfo<Page<OrganizeLevelVO>> queryOrganizeLevelPage(OrganizeLevelDTO.QueryDTO organizeLevelQueryDTO);

    /**
     * 根据条件查询 组织级别 数量
     * @param organizeLevelQueryDTO 组织级别参数
     */
    ResultInfo<Long> queryOrganizeLevelCount(OrganizeLevelDTO.QueryDTO organizeLevelQueryDTO);

    /**
     * 根据条件查询 组织级别
     * @param organizeLevelQueryDTO 组织级别参数
     */
    ResultInfo<List<OrganizeLevelVO>> queryOrganizeLevelList(OrganizeLevelDTO.QueryDTO organizeLevelQueryDTO);

}
